package com.tp03g03;

import com.tp03g03.BD.BDAsadoManager;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.inputmethod.InputMethodManager;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.CheckedTextView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

public class PrepararAsadoActivity extends Activity {
	/**
	 * @see android.app.Activity#onCreate(Bundle)
	 */

	int Hombres = 0;
	int Mujeres = 0;
	int Ninios = 0;

	public enum EstadioPrep {
		INVITADOS, CARNE, ACHURAS, ENSALADA
	}

	EstadioPrep estadio;

	boolean[] estadosCheck;
	boolean[] estadosCarne;
	boolean[] estadosAchuras;
	boolean[] estadosEnsaladas;
	
	String[] arrCarnes;
	String[] arrAchuras;
	String[] arrEnsalada;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		CargarInvitados();
		
		arrCarnes = getResources()
				.getStringArray(R.array.comida_carne);
		arrAchuras = getResources()
				.getStringArray(R.array.comida_achuras);
		arrEnsalada = getResources()
				.getStringArray(R.array.comida_ensalada);
	}

	public void onBackPressed() {
		if (estadio == EstadioPrep.INVITADOS) {
			super.onBackPressed();
		} else if (estadio == EstadioPrep.CARNE) {
			CargarInvitados();
		} else if (estadio == EstadioPrep.ACHURAS) {
			CargarTiposCarne();
		} else if (estadio == EstadioPrep.ENSALADA) {
			CargarTiposAchuras();
		}
	}

	/* Paso invitados */
	public void CargarInvitados() {
		setContentView(R.layout.comida_seleccion);
		TextView txtHombres = (TextView) findViewById(R.id.txtHombres);
		TextView txtMujeres = (TextView) findViewById(R.id.txtMujeres);
		TextView txtNinios = (TextView) findViewById(R.id.txtNinios);

		txtHombres.setText(String.valueOf(Hombres));
		txtMujeres.setText(String.valueOf(Mujeres));
		txtNinios.setText(String.valueOf(Ninios));

		estadio = EstadioPrep.INVITADOS;
	}

	public void CantidadInvitados(View v) {
		TextView txtHombres = (TextView) findViewById(R.id.txtHombres);
		TextView txtMujeres = (TextView) findViewById(R.id.txtMujeres);
		TextView txtNinios = (TextView) findViewById(R.id.txtNinios);
		try {
			Hombres = Integer.valueOf(txtHombres.getText().toString());
			Mujeres = Integer.valueOf(txtMujeres.getText().toString());
			Ninios = Integer.valueOf(txtNinios.getText().toString());
		} catch (Exception e) {
			Log.e("PrepararAsado", e.getMessage());
		}

		InputMethodManager inputManager = (InputMethodManager) this
				.getSystemService(Context.INPUT_METHOD_SERVICE);
		inputManager.hideSoftInputFromWindow(this.getCurrentFocus()
				.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
		
		if(Hombres+Mujeres+Ninios == 0){
			Toast.makeText(this, "Por favor, ingrese por lo menos 1 invitado.", Toast.LENGTH_SHORT).show();
		}else{
			CargarTiposCarne();
		}
	}

	/* Paso carnes */
	private void CargarListaComida(String label, String[] arrayValores) {
		setContentView(R.layout.comida_tipos);
		estadosCheck = new boolean[arrayValores.length];
		TextView lblComida = (TextView) findViewById(R.id.lblComida);
		ListView lstComida = (ListView) findViewById(R.id.lstComida);

		lblComida.setText(label);

		lstComida
				.setAdapter(new ArrayAdapter<String>(this,
						android.R.layout.simple_list_item_multiple_choice,
						arrayValores));
		lstComida.setOnItemClickListener(new OnItemClickListener() {
			@Override
			public void onItemClick(AdapterView<?> a, View v, int position,
					long id) {
				CheckedTextView cv = (CheckedTextView) v;
				boolean estado = estadosCheck[position];
				cv.setChecked(!estado);
				estadosCheck[position]=!estado;
			}
		});
	}

	private void CargarTiposCarne() {

		CargarListaComida("Carne", arrCarnes);
		Button btnContinuar = (Button) findViewById(R.id.btnContinuar);
		btnContinuar.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				estadosCarne=estadosCheck;
				CargarTiposAchuras();
			}
		});

		estadio = EstadioPrep.CARNE;
	}
	/* Paso achuras */
	private void CargarTiposAchuras() {

		CargarListaComida("Achuras", arrAchuras);
		Button btnContinuar = (Button) findViewById(R.id.btnContinuar);
		btnContinuar.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				estadosAchuras=estadosCheck;
				CargarTiposEnsaladas();
			}
		});
		
		estadio = EstadioPrep.ACHURAS;
	}

	/* Paso ensaladas */
	private void CargarTiposEnsaladas() {

		
		CargarListaComida("Ensalada", arrEnsalada);
		Button btnContinuar = (Button) findViewById(R.id.btnContinuar);
		btnContinuar.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				estadosEnsaladas=estadosCheck;
				TerminarCarga();
			}
		});

		estadio = EstadioPrep.ENSALADA;
	}

	/* Paso final */
	private void insertarComidas(int categoria, boolean[] arrChecks, String[] arrComida, BDAsadoManager BAM){
		for(int i=0; i < arrChecks.length; i++){
			if (arrChecks[i] == true){
				BAM.agregarComida(categoria, arrComida[i]);
			}
		}
		
	}
	
	
	private void TerminarCarga() {
		BDAsadoManager BAM = new BDAsadoManager(this, 1);
		BAM.borrarTablas();
		BAM.agregarInvitado(0, Hombres);
		BAM.agregarInvitado(1, Mujeres);
		BAM.agregarInvitado(2, Ninios);
		
		insertarComidas(1, estadosCarne, arrCarnes, BAM);
		insertarComidas(2, estadosAchuras, arrAchuras, BAM);
		insertarComidas(3, estadosEnsaladas, arrEnsalada, BAM);

		BAM.cerrarDB();
		
		setResult(RESULT_OK, getIntent());
		finish();
	}
}

